package com.browsesoft;

import java.rmi.Remote;
import java.util.Hashtable;
import java.util.LinkedList;

import com.browsesoft.resource.Resource;
import com.browsesoft.user.Role;

/**
 * 实体管理器的对外接口
 */
public interface EntityManagerRMI extends Remote {
	/**
	 * 根据ID获取对象
	 * 
	 * @return Object
	 */
	public Object getObject(String id) throws Exception;

	/**
	 * 根据属性名=属性值对查找
	 * 
	 * @param className
	 *            要查找的对象类型
	 * @param ht
	 *            属性名=属性值对 return 找到的对象列表
	 */
	public LinkedList getObjects(String className, Hashtable ht)
			throws Exception;

	/**
	 * 得到某种类型的所有实体
	 */
	public LinkedList getObjects(String className) throws Exception;

	/**
	 * 根据属性名=属性值查找
	 * 
	 * @param className
	 *            要查找的对象类型
	 * @param name
	 *            属性名
	 * @param value 属性值 return 找到的对象列表
	 */
	public LinkedList getObjects(String className, String name, String value)
			throws Exception;

	/**
	 * 取得资源的根
	 * 
	 * @return
	 */
	public Resource getRoot() throws Exception;

	/**
	 * 得到给定资源的根节点，资源没有嵌套
	 * 
	 * @return 根
	 */
	public Resource getGivenResourceRoot(String type) throws Exception;

	/**
	 * 取得功能的根
	 * 
	 * @return 功能的根
	 */
	public Resource getRootFunction() throws Exception;

	/**
	 * 得到所有用户
	 * 
	 * @return 所有用户
	 */
	public Hashtable getAllUser() throws Exception;

	/**
	 * 得到所有角色
	 * 
	 * @return 所有角色链表
	 */
	public LinkedList getAllRoles() throws Exception;

	/**
	 * 根据角色名称得到角色
	 * 
	 * @param name
	 *            角色名称
	 * @return 角色
	 */
	public Role getRoleFromName(String name) throws Exception;

	/**
	 * 根据资源全名得到资源
	 * 
	 * @param name
	 * @return
	 */
	public Resource getResourceFromName(String name) throws Exception;

	/**
	 * 得到所有用户
	 * 
	 * @return 所有用户链表
	 */
	public LinkedList getUsers() throws Exception;

	/**
	 * 根据用户中文名称得到用户
	 * 
	 * @param name
	 * @return LinkedList
	 */
	public LinkedList getUserFromCname(String name) throws Exception;
}
